package data.trade;

import java.util.ArrayList;
import data.ListInterIterator;
import data.goods.Goods;
import data.stragety.*;
import data.stragetylist.*;

@SuppressWarnings("serial")
public class SaleInformation extends Trade{
	
	private double totalprice;
	private double realtotalprice;
	private ArrayList<Goods> buygoods;
	private ArrayList<String> giftstragetyID;
	private ArrayList<String> bargainstragetyID;
	private String totalgiftID;
	private String totalBargainID;
	private ArrayList<GiftStragety> giftstragetylist=new ArrayList<GiftStragety>();
	private ArrayList<BargainStragety> bargainstragetylist=new ArrayList<BargainStragety>();
	private TotalGiftStragety totalgiftstragety=null;
	private TotalBargainStragety totalbargainstragety=null;
	
	public SaleInformation(String vipID,String clerkID,double totalprice,
			double realtotalprice,ListInterIterator<Goods> buygoods,
			ListInterIterator<String> giftstragetys,ListInterIterator<String> bargainnstragetys,
			String totalgiftstragety,String totalbargainstragety){
		super(vipID,clerkID);
		this.totalprice=totalprice;
		this.realtotalprice=realtotalprice;
		this.buygoods=buygoods.toArray();
		this.giftstragetyID=giftstragetys.toArray();
		this.bargainstragetyID=bargainnstragetys.toArray();
		this.totalgiftID=totalgiftstragety;
		this.totalBargainID=totalbargainstragety;
		setGiftstragety();
		setBargainstragety();
		setTotalGiftstragety();
	    
	}
	
	
	private void setGiftstragety(){
		GiftStragetyList gsl=new GiftStragetyList();
		for(int i=0;i<giftstragetyID.size();i++){
			giftstragetylist.add(gsl.idFind(giftstragetyID.get(i)));
		}
	}
	
	private void setBargainstragety(){
		BargainStragetyList bsl=new BargainStragetyList();
		for(int i=0;i<bargainstragetyID.size();i++){
			bargainstragetylist.add(bsl.idFind(bargainstragetyID.get(i)));
		}
	}
	
	private void setTotalGiftstragety(){
		TotalGiftStragetyList tgsl=new TotalGiftStragetyList();
			totalgiftstragety=tgsl.idFind(totalgiftID);
	}
	
	private void setTotalBargainstragety(){
		TotalBargainStragetyList tgsl=new TotalBargainStragetyList();
			totalbargainstragety=tgsl.idFind(totalBargainID);
	}
	
	
	public double getTotalPrice(){
		return totalprice;
	}
	
	public void changeTotalPrice(double changeprice){
		this.totalprice=totalprice+changeprice;
	}
	
	public double getRealTotalPrice(){
		return realtotalprice;
	}

	public ListInterIterator<Goods> getBuygoods(){
		return new ListInterIterator<Goods>(buygoods);
	}
	
	public ListInterIterator<GiftStragety> getGiftstragety(){
		return new ListInterIterator<GiftStragety>(giftstragetylist);
	}
	
	public ListInterIterator<BargainStragety> getBargainstragety(){
		return new ListInterIterator<BargainStragety>(bargainstragetylist);
	}
	
	public TotalGiftStragety getTotalgiftstragety(){
		return totalgiftstragety;
	}
	public boolean hasTotalStragety(){
		if((totalgiftID==null)&&(totalBargainID==null))
			return false;
		else
			return true;
	}
	
	public String toString(){
		String s="&&&&&&&&&&&&&&&&\n";
		s=clerkID+" "+time+" "+totalprice+" "+realtotalprice+"\n"+buygoods.get(0).getNum()+"\n";
		s=s+toArray(giftstragetyID)+toArray(bargainstragetyID)+totalgiftID+"\n"+totalBargainID+"\n";
		
		return s;
	}
	
	public String toArray(ArrayList<String> y)
	{   
		String s="";
		for(int i=0;i<y.size();i++){
			s=s+y.get(i)+" ";
		}
		s=s+"\n";
		return s;
	}
	
	
}
